package com.oa.cms.converter.base;


import java.util.List;
import java.util.stream.Collectors;
import org.springframework.util.CollectionUtils;

/**
 * dto -> model and model -> dto 工具类
 * @author : cabbage
 */
public interface BaseConvert<Model, Dto> {

    /**
     * 将model实体类转成dto类
     * @param model model类
     * @return dto类
     */
    Dto convertToDto(Model model);

    /**
     * 将model集合转成dto集合
     * @param models model类集合
     * @return dto类集合
     */
    default List<Dto> convertToDto(List<Model> models) {
        if (!CollectionUtils.isEmpty(models)) {
            return models.stream().map(model -> this.convertToDto(model)).collect(Collectors.toList());
        }
        return null;
    }

    /**
     * 将dto转成model类
     * @param dto dto类
     * @return model类
     */
    Model convertToEntity(Dto dto);

    /**
     * 将dto集合转成model集合
     * @param dtos dto集合
     * @return model集合
     */
    default List<Model> convertToEntity(List<Dto> dtos) {
        if (!CollectionUtils.isEmpty(dtos)) {
            return dtos.stream().map(dto -> this.convertToEntity(dto)).collect(Collectors.toList());
        }
        return null;
    }


}
